package com.shine.cotrun.xml;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * XML解析器，生成document
 * 后期可扩展进行xsd验证
 * @author 卓诗垚
 * @version 1.0
 */
public class XMLParser {
	
	/**
	 * 使用dom4j解析xml
	 * 可扩展xsd验证，xsd文件从XMLReader中取得
	 * 返回document
	 * @param xmlReader
	 */
	public static void parse(XMLReader xmlReader) {
		if (xmlReader == null) {
			return;
		}
		SAXReader saxReader = new SAXReader();//
		
		Document doc = null;
		try {
			doc = saxReader.read(xmlReader.xmlSource);
			xmlReader.document = doc;
			xmlReader.doRead();
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 取得节点的文本性值，若为空字窜或null返回默认值
	 * @param e document节点
	 * @param defaultValue 默认值
	 * @return 节点文本
	 */
	public static String getElementText(Element e, String defaultValue) {
		if ( e == null) {
			return defaultValue; 
		}
		String str = e.getTextTrim();
		if (str != null && !str.equals("")) {
			return str;
		}
		return defaultValue;
	}
	
	public static String getElementText(Element e) {
		return getElementText(e, null);
	}
	
	/**
	 * 取得节点的属性值，若为空字窜或null返回默认值
	 * @param e document节点
	 * @param name 属性名
	 * @param defaultValue 默认值
	 * @return 属性值
	 */
	public static String getElementAttribute(Element e, String name ,String defaultValue) {
		if ( e == null || name == null) {
			return defaultValue; 
		}
		String str = e.attributeValue(name);
		if (str != null && !str.trim().equals("")) {
			return str.trim();
		}
		return defaultValue;
	}
	
	public static String getElementAttribute(Element e, String name) {
		return getElementAttribute(e, name ,null);
	}
}
